#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QMessageBox>
#include <QMenuBar>
#include <QVector>
#include <QListWidget>
#include <QValidator>
#include <QSqlDatabase>
#include <QSqlQuery>
#include "choicesingle.h"
#include "choicemul.h"
#include "judge.h"
#include "answer.h"


QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    // 连接数据库
    void ConnectSqlite();

    // 初始化系统
    void Init();

    // 设置风格
    void SetStyleSheet();

    // 加载数据库
    void LoadExam();

    // 保存到数据库
    void SaveExam();

    // 创建菜单
    void CreateMenu();

    // 作答动作
    void Action();

    // 多选作答
    void ActionMul();

    // 清空添加区
    void ClearArea();

    // 显示列表
    void ShowList();

    // 显示考试题目
    void ShowExam();

    // 计算试卷总分值
    int ExamScore();

    // 计算得分
    int CalScore();

private slots:
    // 按钮槽函数集合

    void on_btn_add_clicked();

    void on_btn_mod_clicked();

    void on_btn_submit_clicked();

    void on_btn_pre_clicked();

    void on_btn_next_clicked();

private:
    Ui::MainWindow *ui;
    QSqlDatabase m_db;          // 数据库连接
    QMenuBar *m_bar;            // 菜单
    QLabel * m_lab;             // 状态栏项目
    QVector<Question*> m_arr;   // 试题容器
    QVector<QString> m_user;    // 用户作答
    QString m_addCate;          // 添加类型
    int m_idx = -1;             // 当前选择的题目的索引
    int m_pos = -1;             // 正在考试的题目的索引
};
#endif // MAINWINDOW_H
